package com.ytf.test.tenth;


interface Selector{
    boolean end();
    Object current();
    void next();
}
/**
 * @author: YTF
 * @date: 2025/2/20 16:43
 * @version: 1.0
 * @description:
 */
public class Sequence {
    private Object[] items;
    private int next = 0;

    public Sequence(int size) {
        items  = new Object[size];
    }
    public void add(Object x){
        if (next<items.length){
            items[next++] = x;
        }
    }
    private class SequenceSelector implements Selector{

        private  int i = 0;
        @Override
        public boolean end() {
            return i == items.length;
        }

        @Override
        public Object current() {
            return items[i];
        }

        @Override
        public void next() {
            if (i<items.length){
                i++;
            }
        }
    }
    public Selector selector(){
        return new SequenceSelector();
    }

    public static void main(String[] args) {
        Sequence sequence = new Sequence(10);
        for (int i = 0; i < 10; i++) {
            sequence.add(Integer.toString(i));
        }
        Selector selector = sequence.selector();
        while (!selector.end()){
            System.out.print(selector.current()+ " ");
            selector.next();
        }
        /**
         * OutPut:
         * 0 1 2 3 4 5 6 7 8 9
         */
    }
}
